package com.yh.service.impl;

import com.yh.mapper.RoleMapper;
import com.yh.model.Permission;
import com.yh.model.Role;
import com.yh.service.RoleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class RoleServiceImpl implements RoleService {
    @Autowired
    RoleMapper roleMapper;

    /**
     * 查询所有角色
     *
     * @return
     */
    @Override
    public List<Role> findAll() {
        return roleMapper.findAll();
    }

    /**
     * 添加角色
     *
     * @param role
     */
    @Override
    public void save(Role role) {
        roleMapper.save(role);
    }

    /**
     * 根据用户id查询用户详情(用户 角色 权限,两个关系表)
     *
     * @param id 用户id
     * @return 用户详情
     */
    @Override
    public Role findById(Integer id) {
        return roleMapper.findById(id);
    }

    /**
     * 查询角色没有的权限集合
     *
     * @param id 角色id
     * @return 权限集合
     */
    @Override
    public List<Permission> findOthersPermissionByRoleId(Integer id) {
        return roleMapper.findOthersPermissionByRoleId(id);
    }

    /**
     * 为角色添加权限(中间表)
     *
     * @param roleId 角色id
     * @param ids    权限集合
     */
    @Override
    public void addPermissionToRole(Integer roleId, Integer[] ids) {
        for (Integer permissionId : ids) {
            roleMapper.addPermissionToRole(roleId, permissionId);
        }
    }

    /**
     * 删除指定的角色信息(并且删除关系表中的关联数据)
     *
     * @param id 角色id
     */
    @Override
    public void deleteRole(Integer id) {
        //先删关系
        roleMapper.deleteRelationByRoleId(id);
        //再删角色信息
        roleMapper.deleteRoleByRoleId(id);
    }
}
